Mes Nautilus-scripts

Prérequis

Un script pour renommer en masse avec pyrenamer

#!/bin/bash
#
# Lance l'application Pyrenamer
# dans le dossier selectionné
# ou dans le dossier du fichier selectionné.
#
# Nautilus Script "Renommer en masse" #
#
# **************************************************************
# NB :
# Il semble qu'il y ait un bug entre bash, gtk, python
# depuis Ubuntu Xenial :
# - si le script lance directement la commande "pyrenamer"
# - le passage de l'argument $wdir ne se fait pas.
# Résolu temporairement avec la commande "bash -c"
# *******************************************************************
#
# Debut de programme
#
# Si l'argument $1 est vide :
# - le clic droit ne sélectionne ni dossier ni fichier
# - comportement plus valide avec xenial
# - pyrenamer s'ouvre par défaut dans $HOME
# - on fait ouvrir pyrenamer dans le dossier courant du clic "vide"
#
if [ "$1" = "" ];then
    wdir=${NAUTILUS_SCRIPT_CURRENT_URI#file://}
    else
#
# L'argument $1 n'est pas vide :
# - le clic droit sélectione un dossier ou un fichier
# - la variable filetype enregistre le type de l'argument
# - avec seulement la note "directory" ou "file"
#
    filetype=$(file "$1")
    filetype=${filetype##*: }
#
# La variable filetype enregistre le type "directory" :
# - le chemin de l'argument sélectionné est reconstitué
# - avec la localisation complète et courante du dossier sélectionné
# - et de son nom, débarrassé de la notation shell "file://"
#
    if [ "$filetype" = "directory" ];then
    wdir="${NAUTILUS_SCRIPT_CURRENT_URI#file://}/$1"
    else
#
# La variable filetype enregistre le type "file" :
# - le chemin de l'argument sélectionné est reconstitué
# - avec seulement la localisation complète et courante du fichier sélectiionné
# - débarrassé de la notation shell "file://"
#
    wdir=${NAUTILUS_SCRIPT_CURRENT_URI#file://}
    fi
fi
#
# Pour tout contenu de localisation complète
# pour le dossier de travail ou d'exécution (wdir = working directory)
# la variable $wdir est  débarrassée de la notation shell du symbole "espace"
# tous les échappements shell %20 deviennent des espaces " "
#
wdir=${wdir//%20/ }
#
# Le contenu de la variable $wdir
# avec ses espaces et ses caractères accentués
# est protégé par des guillemets
#
# Pour parer au bug de passage des arguments,
# le script lance "pyrenamer" en console avec bash :
# bash est lancé et exécute pyrenamer avec l'argument $wdir
# entre guillemets.
#
# Insérer cette ligne de code zenity,
# pour montrer que l'argument $wdir
# sera utilisé correctement avec espaces
# et caractères accentués.
# zenity --info --text="pyrenamer '$wdir'"
bash -c "pyrenamer '$wdir'"

Explications de code

Lire les commentaires du code